#include "widget.h"
#include "ui_widget.h"
#include <QShortcut>
//QSlider滑动条控件-示例&通过自定义快捷键来调节滑动条
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    slider1=new QSlider(this);
    slider2=new QSlider(this);
    slider1->setGeometry(50,50,200,50);
    slider2->setGeometry(50,100,50,200);
    //设置方向
    slider1->setOrientation(Qt::Horizontal);
    slider2->setOrientation(Qt::Vertical);
    //翻转垂直方向为从上到下
    slider2->setInvertedAppearance(true);

    slider1->setMinimum(100);//最小值
    slider1->setMaximum(1000);//最大值
    slider1->setValue(500);//初始值
    slider1->setSingleStep(50);//设置步长

    slider2->setMinimum(100);
    slider2->setMaximum(1000);
    slider2->setValue(500);
    slider2->setSingleStep(50);

    //valueChanged(int)：数值改变时触发
    connect(slider1,&QSlider::valueChanged,this,&Widget::handler1);
    connect(slider2,&QSlider::valueChanged,this,&Widget::handler2);


    slider3=new QSlider(this);
    slider3->setGeometry(50,300,300,50);//设置位置尺寸
    slider3->setOrientation(Qt::Horizontal);//设置为水平方向

    label=new QLabel(this);
    label->setGeometry(100,400,200,100);
    label->setText("当前值为:");

    //只要拖动此滑动条，就将值展示给label控件
    connect(slider3,&QSlider::valueChanged,this,&Widget::handler3);

    //设置快捷键
    //QShortcut类用于管理键盘快捷键
    QShortcut* shortCut1=new QShortcut(this);
    //设置快捷键 '-':减少
    shortCut1->setKey(QKeySequence("-"));
    QShortcut* shortCut2=new QShortcut(this);
    //设置快捷键 '=':增加
    shortCut2->setKey(QKeySequence("="));

    //只要这两个快捷键被触发，就会发出activated信号。进而就可以对滑动条数值进行修改
    connect(shortCut1,&QShortcut::activated,this,&Widget::sub);
    connect(shortCut2,&QShortcut::activated,this,&Widget::add);
}

Widget::~Widget()
{
    delete ui;
}
//改变高度-垂直
void Widget::handler2(int value)
{
    //获取当前窗口的尺寸
    const QRect rect=this->geometry();
    this->setGeometry(rect.x(),rect.y(),rect.width(),value);
}


//改变宽度-水平
void Widget::handler1(int value)
{
    //获取当前窗口的尺寸
    const QRect rect=this->geometry();
    this->setGeometry(rect.x(),rect.y(),value,rect.height());
}


void Widget::handler3(int value)
{
    label->setText("当前值为:"+QString::number(value));
}

void Widget::add()
{
    //通过快捷键触发此增加滑动条的操作
    //获取当前值
    int value=slider3->value();
    if(value>=slider3->maximum())
    {
        return;
    }
    //更新滑动条值
    slider3->setValue(value+5);
}

void Widget::sub()
{
    //获取当前值
    int value=slider3->value();
    if(value<=slider3->minimum())
    {
        return;
    }
    //更新
    slider3->setValue(value-5);
}

